<?php


namespace app\common\caches;


use think\facade\Cache;

class LoveQuestionCache
{
    /**
     * @todo 缓存用户的恋爱问题详情
     * @param $uid  用户ID
     * @param $q_id 问题id
     * @param $question 该用户的该问题的详情信息，包括问题回答信息
     * @return bool
     */
    public static function setUserLoveQuestById($uid, $q_id, $question)
    {
        return Cache::tag("user:{$uid}.love.question")
            ->set("user:{$uid}.love.question:{$q_id}", $question, 5 * 60 * 60);
    }

    /**
     * @todo 获取用户缓存的恋爱问题详情
     * @param $uid  用户ID
     * @param $q_id 问题id
     * @return mixed
     */
    public static function getUserLoveQuestById($uid, $q_id)
    {
        return Cache::get("user:{$uid}.love.question:{$q_id}") ?? null;
    }

    /**
     * @todo 缓存用户恋爱问题列表数据
     * @param $uid          用户ID
     * @param $page         列表页码
     * @param $limit        分页条数
     * @param $questions    恋爱问题列表数据
     * @return bool
     */
    public static function setUserLoveQuestList($uid, $page, $limit, $questions)
    {
        $cache_key = "user:{$uid}.love.questions.page:{$page}.limit:{$limit}";
        return Cache::tag("user:{$uid}.love.question")
            ->set($cache_key, $questions, 5 * 60 * 60);
    }

    /**
     * @todo 获取用户恋爱问题缓存数据
     * @param $uid          用户ID
     * @param $page         列表页码
     * @param $limit        分页条数
     * @return mixed
     */
    public static function getUserLoveQuestList($uid, $page, $limit)
    {
        $cache_key = "user:{$uid}.love.questions.page:{$page}.limit:{$limit}";
        return Cache::get($cache_key);
    }

    /**
     * @todo 通过标签批量移除用户不同形式的恋爱问题缓存数据：问题详情，问题列表
     * @param $uid  用户ID
     * @return bool
     */
    public static function removeUserLoveQuestByTag($uid)
    {
        return Cache::tag("user:{$uid}.love.question")->clear();
    }
}
